package com.example.draw;

import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.scene.shape.Shape;

/**
 * <p>绘画图形接口</p>
 *
 * @author dc
 * @date 2025-09-29
 **/
public interface DrawShape {
    /**
     * 获取粗细
     * @return thickness 轮廓粗细 单位px
     */
    double getDrawThickness();
    /**
     * 获取颜色
     * @return 颜色
     */
    Color getDrawColor();

    /**
     * 更新图形
     * @param selectionArea 鼠标选中的区域
     * @param startPointX 鼠标按下开始绘画的起点X坐标
     * @param startPointY 鼠标按下开始绘画的起点Y坐标
     * @param x 鼠标移动过程中X坐标
     * @param y 鼠标移动过程中Y坐标
     */
    void updateShape(Rectangle selectionArea, double startPointX, double startPointY, double x, double y);

    /**
     * 获取图形类型
     * @return 图形类型
     */
    default Shape getShape() {
        if (this instanceof Shape) {
            return (Shape) this;
        } else {
            throw new UnsupportedOperationException("Cannot cast to Shape");
        }
    }
}
